package com.tp2.etna.distribucion2.controller;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.tp2.etna.distribucion2.modelo.HojaRuta;
import com.tp2.etna.distribucion2.service.ActualizarInfTransporteHojaRuta;

@Controller
public class ActualizarInformacionTransporteHojaRuta {
	
	@Autowired
	private ActualizarInfTransporteHojaRuta actualizarInfTransporteHojaRuta;
	
	@RequestMapping(value = "/actualizarInfTransporteHojaRuta", method = RequestMethod.GET)
	public String actualizarCantEntrega() {   
		return "dist2_actualizarInfTransporteHojaRuta";
	 }
	
	@RequestMapping(value = "/hojaRuta/pendientes", method = RequestMethod.GET,produces={"application/json"})
	public @ResponseBody List<HojaRuta> obtenerEntregasPendientes(@RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd")Date fecha) {  		
		return actualizarInfTransporteHojaRuta.obtenerHojaRutaPendientes(fecha);
	 }
	
	@RequestMapping(value = "/modificarHojaRutaTransporte", method = RequestMethod.GET,produces={"application/json"})
	public String actualizarCantEntregaDetalle(ModelMap model,@RequestParam("id") int id) {  		
		
		try {
			
			model.addAttribute("transportes", new ObjectMapper().writeValueAsString(actualizarInfTransporteHojaRuta.obtenerTransporteDisponible(id)));
			model.addAttribute("transportistas", new ObjectMapper().writeValueAsString(actualizarInfTransporteHojaRuta.obtenerTransportistasDisponibles(id)));
			model.addAttribute("copilotos", new ObjectMapper().writeValueAsString(actualizarInfTransporteHojaRuta.obtenerCopilotosDisponibles(id)));
			model.addAttribute("asistentes", new ObjectMapper().writeValueAsString(actualizarInfTransporteHojaRuta.obtenerAsistentesDisponibles(id)));
			model.addAttribute("hojaRutaId", id);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return "dist2_modificarHojaRutaTransporte";
	 }
	
	@RequestMapping(value = "/verDetalleHojaRutaTransporte", method = RequestMethod.GET,produces={"application/json"})
	public String verDetalleHojaRutaTransporte(ModelMap model,@RequestParam("id") int id) {  		
		
		try {	
			model.addAttribute("hojaRutaId", id);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return "dist2_verDetalleHojaRutaTransporte";
	 }
	
	@RequestMapping(value = "/hojaRuta/obtenerHojaRutaDetalle/{id}", method = RequestMethod.GET,produces={"application/json"})
	public @ResponseBody HojaRuta obtenerEntrega(ModelMap model,@PathVariable("id") int id) {  				
		return actualizarInfTransporteHojaRuta.obtenerHojaRutaDetalle(id);
	}
	
	@RequestMapping(value = "/hojaRuta/actualizarTransporte/{id}", method = RequestMethod.GET,produces={"application/json"})
	public @ResponseBody boolean actualizarTransporte(ModelMap model,@PathVariable("id") int idHojaRuta
														,@RequestParam("idTransporte") Integer idTransporte
														,@RequestParam("idTransportista") Integer idTransportista
														,@RequestParam("idCopiloto") Integer idCopiloto
														,@RequestParam(required=false,value="idAsistente") Integer idAsistente) {  				
		return actualizarInfTransporteHojaRuta.actualizarTransporteHojaRura(idHojaRuta,idTransporte,idTransportista,idCopiloto,idAsistente);
	}
	
	
}
